a11y: Set accessible role for GtkLinkButton
authorMatthias Clasen <mclasen@redhat.com>
Thu, 30 Jul 2020 00:26:16 +0000 (20:26 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 30 Jul 2020 02:46:00 +0000 (22:46 -0400)
Set the accessible role for GtkLinkButton to button.
We don't use the 'link' role since ARIA says "if it
behaves like a button, use 'button'".

Update docs and add a test.

This changes should not be neccessary, since
GtkLinkButton derives from GtkButton, see #2965.

docs/reference/gtk/section-accessibility.md
gtk/gtklinkbutton.c
testsuite/a11y/button.c

index 4dd51c6a7eb8927ed7987e4d5ed62baeed1c2035..d4bc80590cd520fd5790ac760c222e6d0cea17b7 100644 (file)
@@ -46,7 +46,7 @@ Each role name is part of the #GtkAccessibleRole enumeration.
 | Role name | Description | Related GTK widget |
 |-----------|-------------|--------------------|
 | `ALERT` | A message with important information | - |
-| `BUTTON` | A control that performs an action when pressed | #GtkButton |
+| `BUTTON` | A control that performs an action when pressed | #GtkButton, #GtkLinkButton |
 | `CHECKBOX` | A control that has three possible value: `true`, `false`, or `undefined` | #GtkCheckButton |
 | `COLUMNHEADER` | The header of a column in a list or grid | - |
 | `COMBOBOX` | A control that can be expanded to show a list of possible values to select | #GtkComboBox |
index df25f264ae440e1fdf34703a6fa84853c7786665..521c196a040210e9dcd038e4475fd871c76d4d05 100644 (file)
  *
  * GtkLinkButton has a single CSS node with name button. To differentiate
  * it from a plain #GtkButton, it gets the .link style class.
+ *
+ * # Accessibility
+ *
+ * GtkLinkButton uses the #GTK_ACCESSIBKE_ROLE_BUTTON role.
  */
 
 #include "config.h"
@@ -217,6 +221,7 @@ gtk_link_button_class_init (GtkLinkButtonClass *klass)
                   G_TYPE_BOOLEAN, 0);
 
   gtk_widget_class_set_css_name (widget_class, I_("button"));
+  gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_BUTTON);
 
   /**
    * GtkLinkButton|clipboard.copy:
index 9c5fdad777d3589fc365ea3350ba73ae9ad33b87..f78207fb319d7c667c0778205d2d1b6ac9a083ba 100644 (file)
@@ -25,6 +25,28 @@ button_label (void)
   g_object_unref (button);
 }
 
+static void
+linkbutton_role (void)
+{
+  GtkWidget *button = gtk_link_button_new ("Hello");
+  g_object_ref_sink (button);
+
+  gtk_test_accessible_assert_role (button, GTK_ACCESSIBLE_ROLE_BUTTON);
+
+  g_object_unref (button);
+}
+
+static void
+linkbutton_label (void)
+{
+  GtkWidget *button = gtk_link_button_new ("Hello");
+  g_object_ref_sink (button);
+
+  gtk_test_accessible_assert_property (button, GTK_ACCESSIBLE_PROPERTY_LABEL, "Hello");
+
+  g_object_unref (button);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -32,6 +54,8 @@ main (int argc, char *argv[])
 
   g_test_add_func ("/a11y/button/role", button_role);
   g_test_add_func ("/a11y/button/label", button_label);
+  g_test_add_func ("/a11y/linkbutton/role", linkbutton_role);
+  g_test_add_func ("/a11y/linkbutton/label", linkbutton_label);
 
   return g_test_run ();
 }